package org.formal.system.service;

import java.util.List;

import org.formal.common.base.BaseService;
import org.formal.system.entity.ResourceEntity;

/**
 * 资源信息接口
 * @author jiangyan
 *
 */
public interface ResourceService extends BaseService<ResourceEntity>{
	
	/**
	 * 获取当前用户下的所有资源
	 * @return
	 */
	public List<ResourceEntity> loadUserResources();
	
	/**
	 * 获取树形结构下的所有资源
	 * @return
	 */
	public List<ResourceEntity> getResourceTreeAll();

	/**
	 * 修改子节点的层级
	 * @param id 
	 * @param level 等级
	 * @param menuNo 菜单编码
	 */
	public void recurviseChildren(List<ResourceEntity> reousrces, Integer level, String menuNo);
	
	/**
	 * 根据父级id获取所有子节点（包含子节点的子节点）
	 * @param parentId
	 * @return
	 */
	public List<ResourceEntity> getChilldrenByParentId(String parentId);
	
	/**
	 * 根据父级id 删除所有子节点（包含子节点的子节点）
	 * @param id
	 */
	public void deleteByparentId(String id);
	
	/**
	 * 获取父节点下子节点等等总数量
	 * @param parentId
	 * @return
	 */
	public int getCountByparentId(String parentId);
	
	/**
	 * 保存本身数据同时修改现在父级 和之前父级及子节点数据层级和状态 
	 * @param entity
	 */
	public void saveWithUpdateStatus(ResourceEntity entity);
	
	/**
	 * 删除本身及子节点 同时修改父节点状态
	 * @param id
	 */
	public void deleteWithChildrenById(String id);
	
	/**
	 * 根据id获取资源集合
	 * @param roleId
	 * @return
	 */
	public List<ResourceEntity> getListByRoleId(String roleId);
	
	/**
	 * 保存角色ID及菜单集合
	 * @param id
	 * @param reosurceArray
	 */
	public void saveRoleResource(String id, String[] reosurceArray);
	
	/**
	 * 获取当前资源节点及子节点的资源集合
	 * @param resourceId
	 * @return
	 */
	public List<ResourceEntity> getExcludeResources(String resourceId);
	
}   
